import { ApiProperty } from '@nestjs/swagger'
import { Column, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn, BeforeInsert, BeforeUpdate } from 'typeorm'
import { Transform } from 'class-transformer'
import { dateFormat } from '@main/util/CommUtil'

export abstract class BaseEntity {
  @PrimaryGeneratedColumn()
  @ApiProperty({ description: '主键', required: false })
  id: number

  /**
   * date类型的默认格式为: YYYY-MM-DD
   * datetime类型的默认格式为: YYYY-MM-DD HH:MM:SS
   */
  @CreateDateColumn({
    name: 'created_at',
    type: 'datetime',
    comment: '创建日期',
    // 这个的时间是UTC时间
    default: () => 'CURRENT_TIMESTAMP',
    // 这个才是本地时间
    // default: () => "datetime(CURRENT_TIMESTAMP,'localtime')",
  })
  @ApiProperty({ description: '创建日期(新增/更新时不要传该字段)', required: false })
  // @Transform(value => dateFormat(value), { toPlainOnly: true, toClassOnly: false })
  createdAt: Date

  @UpdateDateColumn({
    name: 'updated_at',
    type: 'datetime',
    comment: '更新日期',
    // 这个的时间是UTC时间
    default: () => 'CURRENT_TIMESTAMP',
    // 这个才是本地时间
    // default: () => "datetime(CURRENT_TIMESTAMP,'localtime')",
  })
  // @Transform(value => dateFormat(value), { toPlainOnly: true, toClassOnly: false })
  @ApiProperty({ description: '更新日期(新增/更新时不要传该字段)', required: false })
  updatedAt: Date

  // @BeforeInsert()
  // private beforeInsert(): void {
  //   this.updatedAt = new Date()
  // }

  // @BeforeUpdate()
  // private async beforeUpdate() {
  //   console.log('执行')
  //   this.updatedAt = new Date()
  // }
}
